home *** CD-ROM | disk | FTP | other *** search
- /* XCmdGlue.c - Definitions for calling all standard ProIcon
- * callback routines from C. Include "IconXCmd.h" in your program,
- * and link in this file.
- */
-
- #include "IconXCmd.h"
-
- /* SendCardMessage - Send a HyperCard message (a command with arguments) to the
- * current card. msg is a pointer to a Pascal format string.
- * Not supported by ProIcon.
- */
- pascal void SendCardMessage(paramPtr,msg)
- XCmdBlockPtr paramPtr;
- StringPtr msg;
- {
- paramPtr->inArgs[0] = (long)msg;
- paramPtr->request = xreqSendCardMessage;
- ((procPtr) (paramPtr->entryPoint))();
- }
-
- /* Evaluate a HyperCard expression and return the answer. The answer is
- * a handle to a zero-terminated string.
- * Not supported by ProIcon.
- */
- pascal Handle EvalExpr(paramPtr,expr)
- XCmdBlockPtr paramPtr;
- StringPtr expr;
- {
- paramPtr->inArgs[0] = (long)expr;
- paramPtr->request = xreqEvalExpr;
- ((procPtr) (paramPtr->entryPoint))();
- return (Handle)paramPtr->outArgs[0];
- }
-
-
- /* Count the characters from where strPtr points until the next zero byte.
- * Does not count the zero itself.
- * strPtr must be a zero-terminated string.
- */
- pascal long StringLength(paramPtr,strPtr)
- XCmdBlockPtr paramPtr;
- StringPtr strPtr;
- {
- paramPtr->inArgs[0] = (long)strPtr;
- paramPtr->request = xreqStringLength;
- ((procPtr) (paramPtr->entryPoint))();
- return (long)paramPtr->outArgs[0];
- }
-
-
- /* Perform case-insensitive match looking for pattern anywhere in
- * target, returning a pointer to first character of the first match,
- * in target or NIL if no match found.
- * pattern is a Pascal string,
- * target is a zero-terminated string.
- */
- pascal Ptr StringMatch(paramPtr,pattern,target)
- XCmdBlockPtr paramPtr;
- StringPtr pattern;
- Ptr target;
- {
- paramPtr->inArgs[0] = (long)pattern;
- paramPtr->inArgs[1] = (long)target;
- paramPtr->request = xreqStringMatch;
- ((procPtr) (paramPtr->entryPoint))();
- return (Ptr)paramPtr->outArgs[0];
- }
-
-
- /* Send a HyperCard message (a command with arguments) to HyperCard.
- * msg is a pointer to a Pascal format string.
- */
- pascal void SendHCMessage(paramPtr,msg)
- XCmdBlockPtr paramPtr;
- StringPtr msg;
- {
- paramPtr->inArgs[0] = (long)msg;
- paramPtr->request = xreqSendHCMessage;
- ((procPtr) (paramPtr->entryPoint))();
- }
-
-
- /* Write zeros into memory starting at destPtr and going for longCount
- * number of bytes
- */
- pascal void ZeroBytes(paramPtr,dstPtr,longCount)
- XCmdBlockPtr paramPtr;
- Ptr dstPtr;
- long longCount;
- {
- paramPtr->inArgs[0] = (long)dstPtr;
- paramPtr->inArgs[1] = longCount;
- paramPtr->request = xreqZeroBytes;
- ((procPtr) (paramPtr->entryPoint))();
- }
-
-
-
- /* Convert a Pascal string to a zero-terminated string. Returns a handle
- * to a new zero-terminated string. The caller must dispose the handle,
- * except for the result string.
- */
- pascal Handle PasToZero(paramPtr,pasStr)
- XCmdBlockPtr paramPtr;
- StringPtr pasStr;
- {
- paramPtr->inArgs[0] = (long)pasStr;
- paramPtr->request = xreqPasToZero;
- ((procPtr) (paramPtr->entryPoint))();
- return (Handle)paramPtr->outArgs[0];
- }
-
-
- /* Fill the Pascal string with the contents of the zero-terminated string.
- */
- pascal void ZeroToPas(paramPtr,zeroStr,pasStr)
- XCmdBlockPtr paramPtr;
- char *zeroStr;
- StringPtr pasStr;
- {
- paramPtr->inArgs[0] = (long)zeroStr;
- paramPtr->inArgs[1] = (long)pasStr;
- paramPtr->request = xreqZeroToPas;
- ((procPtr) (paramPtr->entryPoint))();
- }
-
-
- /* Convert a string of ASCII decimal digits to an unsigned long integer.
- */
- pascal long StrToLong(paramPtr,strPtr)
- XCmdBlockPtr paramPtr;
- Str31Ptr strPtr;
- {
- paramPtr->inArgs[0] = (long)strPtr;
- paramPtr->request = xreqStrToLong;
- ((procPtr) (paramPtr->entryPoint))();
- return (long)paramPtr->outArgs[0];
- }
-
-
- /* Convert a string of ASCII decimal digits to a signed long integer.
- * Negative sign is allowed. Skips non-digit leading characters.
- */
- pascal long StrToNum(paramPtr,str)
- XCmdBlockPtr paramPtr;
- Str31Ptr str;
- {
- paramPtr->inArgs[0] = (long)str;
- paramPtr->request = xreqStrToNum;
- ((procPtr) (paramPtr->entryPoint))();
- return paramPtr->outArgs[0];
- }
-
-
- /* Convert the Pascal strings 'true' and 'false' to booleans.
- */
- pascal Boolean StrToBool(paramPtr,str)
- XCmdBlockPtr paramPtr;
- Str31Ptr str;
- {
- paramPtr->inArgs[0] = (long)str;
- paramPtr->request = xreqStrToBool;
- ((procPtr) (paramPtr->entryPoint))();
- return (Boolean)paramPtr->outArgs[0];
- }
-
-
- /* Convert a string of ASCII decimal digits to an extended long integer.
- * myext is a pointer to an extended datum to hold the result.
- */
- pascal void StrToExt(paramPtr,str,myext)
- XCmdBlockPtr paramPtr;
- Str31Ptr str;
- extended * myext;
- {
- paramPtr->inArgs[0] = (long)str;
- paramPtr->inArgs[1] = (long) tr->inArgs[0] = (long)cardFieldFlag;
- paramPtr->inArgs[1] = fieldID;
- paramPtr->request = xreqGetFieldByID;
- ((procPtr) (paramPtr->entryPoint))();
- return (Handle)paramPtr->outArgs[0];
- }
-
-
- /* Set the value of field fieldName to be the zero-terminated string
- * in fieldVal. The contents of the Handle are copied, so you must
- * still dispose it afterwards.
- * Not supported.
- */
- pascal void SetFieldByName(paramPtr,cardFieldFlag,fieldName,fieldVal)
- XCmdBlockPtr paramPtr; Boolean cardFieldFlag;
- StringPtr fieldName; Handle fieldVal;
- {
- paramPtr->inArgs[0] = (long)cardFieldFlag;
- paramPtr->inArgs[1] = (long)fieldName;
- paramPtr->inArgs[2] = (long)fieldVal;
- paramPtr->request = xreqSetFieldByName;
- ((procPtr) (paramPtr->entryPoint))();
- }
-
-
- /* Set the value of field fieldNum to be the zero-terminated string
- * in fieldVal. The contents of the Handle are copied, so you must
- * still dispose it afterwards.
- * Not supported.
- */
- pascal void SetFieldByNum(paramPtr,cardFieldFlag,fieldNum,fieldVal)
- XCmdBlockPtr paramPtr;
- Boolean cardFieldFlag;
- short fieldNum;
- Handle fieldVal;
- {
- paramPtr->inArgs[0] = (long)cardFieldFlag;
- paramPtr->inArgs[1] = fieldNum;
- paramPtr->inArgs[2] = (long)fieldVal;
- paramPtr->request = xreqSetFieldByNum;
- ((procPtr) (paramPtr->entryPoint))();
- }
-
-
- /* Set the value of the field whose ID is fieldID to be the zero-
- * terminated string in fieldVal. The contents of the Handle are
- * copied, so you must still dispose it afterwards.
- * Not supported.
- */
- pascal void SetFieldByID(paramPtr,cardFieldFlag,fieldID,fieldVal)
- XCmdBlockPtr paramPtr;
- Boolean cardFieldFlag;
- short fieldID;
- Handle fieldVal;
- {
- paramPtr->inArgs[0] = (long)cardFieldFlag;
- paramPtr->inArgs[1] = fieldID;
- paramPtr->inArgs[2] = (long)fieldVal;
- paramPtr->request = xreqSetFieldByID;
- ((procPtr) (paramPtr->entryPoint))();
- }
-
-
- /* Return true if the two strings have the same characters.
- * Case insensitive compare of the strings.
- */
- pascal Boolean StringEqual(paramPtr,str1,str2)
- XCmdBlockPtr paramPtr;
- Str31Ptr str1;
- Str31Ptr str2;
- {
- paramPtr->inArgs[0] = (long)str1;
- paramPtr->inArgs[1] = (long)str2;
- paramPtr->request = xreqStringEqual;
- ((procPtr) (paramPtr->entryPoint))();
- return (Boolean)paramPtr->outArgs[0];
- }
-
-
- /* zeroStr points into a zero-terminated string. Collect the
- * characters from there to the next carriage teturn and return
- * them in the Pascal string pasStr. If a return is not found,
- * collect chars until the end of the string.
- */
- pascal void ReturnToPas(paramPtr,zeroStr,pasStr)
- XCmdBlockPtr paramPtr;
- Ptr zeroStr;
- StringPtr pasStr;
- {
- paramPtr->inArgs[0] = (long)zeroStr;
- paramPtr->inArgs[1] = (long)pasStr;
- paramPtr->request = xreqReturnToPas;
- ((procPtr) (paramPtr->entryPoint))();
- }
-
-
- /* Move the pointer scanPtr along a zero-terminated string
- * until it points at a return character or a zero byte.
- */
- pascal void ScanToReturn(paramPtr,scanHndl)
- XCmdBlockPtr paramPtr;
- Ptr * scanHndl;
- {
- paramPtr->inArgs[0] = (long)scanHndl;
- paramPtr->request = xreqScanToReturn;
- ((procPtr) (paramPtr->entryPoint))();
- }
-
-
- /* Move the pointer scanPtr along a zero-terminated
- * string until it points at a zero byte.
- */
- pascal void ScanToZero(paramPtr,scanHndl)
- XCmdBlockPtr paramPtr;
- Ptr * scanHndl;
- {
- paramPtr->inArgs[0] = (long)scanHndl;
- paramPtr->request = xreqScanToZero;
- ((procPtr) (paramPtr->entryPoint))();
- }
-